Option Explicit
'OҲ ChartEventCls
Public WithEvents myCht As Chart
Private PreDataArea As Range
Private Sub Class_Terminate()
    Dim myRng    As Range
    Application.ScreenUpdating = False
    If Not PreDataArea Is Nothing Then
        For Each myRng In PreDataArea.Areas
            myRng.Interior.ColorIndex = 0
        Next
    End If
    Application.ScreenUpdating = True
End Sub
Private Sub myCht_Select(ByVal ElementID As Long, _
                         ByVal Arg1 As Long, _
                         ByVal Arg2 As Long)
    Dim DataArea As Range
    Dim myRng    As Range
    If ElementID <> 3 Then Exit Sub
    If Arg2 = -1 Then Exit Sub
    Set DataArea = SeriesRef(Arg1)
    If DataArea Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    If Not PreDataArea Is Nothing Then
        For Each myRng In PreDataArea.Areas
            myRng.Interior.ColorIndex = 0
        Next
    End If
    Set PreDataArea = DataArea
    For Each myRng In DataArea.Areas
        myRng.Rows(Arg2).Interior.ColorIndex = 3
    Next
    Application.ScreenUpdating = True
End Sub

Function SeriesRef(myIndex As Long) As Range
    Dim myFml      As String
    Dim myAddress As String
    Dim myRefRng   As Range
    Dim i      As Long
    myFml = myCht.SeriesCollection(myIndex).Formula
    If myFml Like "=SERIES(*" Then
        myFml = Mid(myFml, 9)
        myFml = Mid(myFml, InStr(myFml, ",") + 1)
        For i = 1 To 2
            myAddress = Left(myFml, InStr(myFml, ",") - 1)
            myFml = Mid(myFml, InStr(myFml, ",") + 1)
            If Len(myAddress) > 0 Then
                If myRefRng Is Nothing Then
                    Set myRefRng = Evaluate(myAddress)
                Else
                    Set myRefRng = Union(myRefRng, Evaluate(myAddress))
                End If
            End If
        Next
    End If
    Set SeriesRef = myRefRng
End Function
Private Sub myCht_Deactivate()
    Dim myRng    As Range
    Application.ScreenUpdating = False
    If Not PreDataArea Is Nothing Then
        For Each myRng In PreDataArea.Areas
            myRng.Interior.ColorIndex = 0
        Next
    End If
    Application.ScreenUpdating = True
End Sub


'зǼҲ
Dim myChtCls As New ChartEventCls
Sub InitializeChartEvent()
    Set myChtCls.myCht = Worksheets(1).ChartObjects(1).Chart
End Sub
